Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

kadai2-torotake #19

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open

kadai2-torotake #19

wants to merge 6 commits into from

Conversation

torotake
Copy link

Gopher道場#6 課題2

io.Readerとio.Writerについて調べてみよう

標準パッケージでどのように使われているか

  • 標準入力、標準出力、標準エラー出力 (osパッケージ)
  • 暗号や圧縮などデータ変換ソース (crypt, gzipパッケージなど)
  • ネットワーク通信の送受信 (netパッケージなど)
  • 各種Reader/WriterをラッピングしてI/O処理にバッファリング機能を追加 (bufioパッケージ)

io.Readerとio.Writerがあることでどういう利点があるのか具体例を挙げて考えてみる

ファイル、標準入出力、ネットワーク通信など様々なIO処理について、同じ取り扱う事が出来、入出力先の切り替えも容易となる。

例えば、fmt.Fprintfでは出力対象としてio.Writerを要求するので渡すものを変えるだけでファイルへの書き込み、標準出力への出力、ネットワークソケットへの送信処理等を行う事が可能。

// 標準出力
fmt.Fprintf(os.Stderr, "Hello World.")

// ファイルへ書き込み
fp := os.Open("hoge.txt")
fmt.Fprintf(fp, "Hello World.")

// ネットワークへ送信
conn, _ := net.Dial("tcp", "example.com:80")
fmt.Fprintf(conn, "Hello World.")

1回目の宿題のテストを作ってみて下さい

  • テストのしやすさを考えてリファクタリングしてみる
  • テストのカバレッジを取ってみる
  • テーブル駆動テストを行う
  • テストヘルパーを作ってみる

テスト実行

$ go test -v github.com/gopherdojo/dojo6/kadai2/torotake/convert
... (README.md参照)

カバレッジ

$ go test -coverprofile=profile github.com/gopherdojo/dojo6/kadai2/torotake/convert
ok      github.com/gopherdojo/dojo6/kadai2/torotake/convert     1.771s  coverage: 77.8% of statements

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant